定义int a[ ]={1,2,3,4,5,6},*p=a;表达式(*++p)++的值是________。

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:09:25
能把整个运算过程给我详细详细描述一下吗?谢谢了!

这是C语言,当年我的成绩是优秀。这个很简单啊。首先它是定义了一个整型数组a,数组里有6个元素,分别是:
a[0]=1,
a[1]=2,
a[2]=3,
a[3]=4,
a[4]=5,
a[5]=6,
记住C语言里数组的下标永远是从0开始的。接着定义了一个指针变量p,*p=a的意思是把数组a的起始地址赋给指针变量p,即现在p指向a[0],p有值,但不是一个数,而是a[0]在内存中的地址。
表达式(*++p)++,首先做括号里面的,
++在C语言里是单增运算符{(--是单减运算符),++在一个量的前面时,该量先增加1,然后输出该量,++在一个量的后面,先输出该量,然后量自增1}
*++p就是让p增加1,是什么意思呢?刚才p是指向a[0],现在p增加1,也就是现在p指向a[1]了,(*++p)++的值就是a[1]的值了,也即(*++p)++=2。但是输出值2后,p又指向a[2]了。

是2
由于*p=a,p指向了a的第一个元素a[0]
(*++p)++
这个先执行++p
p指向a[1]
*p就是a[2]
转化为a[2]++,由于++先算表达式值在自加1,所以这个表达式的值为2

#include <stdio.h>
void main()
flag = 1;
for ( n = 2; n <= sqrt( ri ); n++ )
if ( ri % n == 0 )
{
flag = 0;
break;
}